package com.sisgesbyte.services.sistema;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.inject.Inject;

import com.sisgesbyte.common.ConstantesInternasSistema;
import com.sisgesbyte.common.Validaciones;
import com.sisgesbyte.dao.beanDao.AccesoHostDetRequest;
import com.sisgesbyte.dao.beanDao.FiltrosSQLBean;
import com.sisgesbyte.dao.seguridad.MantenimientoAccesoHostDao;
import com.sisgesbyte.data.entity.comun.GenericEntity;
import com.sisgesbyte.data.entity.seguridad.AccesoHostListEntity;
import com.sisgesbyte.services.commonBean.GenericResponse;
import com.sisgesbyte.services.sistema.bean.AccesoHostBean;
import com.sisgesbyte.services.sistema.bean.AccesoHostListaResponse;

@Stateless
public class MantenimientoAccesoHostImpl implements MantenimientoAccesoHost {

	
	@EJB
	private MantenimientoAccesoHostDao mantenimientoAccesoHostDao;
	
	@Inject
	private Validaciones validaciones;
	
	@Override
	public AccesoHostListaResponse mostrarAccesosHost(String codTransaccion,FiltrosSQLBean cadenaFiltros) {
		String mensajeTransaccionMetodo = "[mostrarAccesosHost idTx=" + codTransaccion + "] - ";
		AccesoHostListaResponse response = new AccesoHostListaResponse();
		try{
			 response.setIdTransaccion(codTransaccion);
			 List<AccesoHostListEntity> reqAccesoHost = null;
			try{
				reqAccesoHost = mantenimientoAccesoHostDao.listaAccesoHost(cadenaFiltros);
			}catch(Exception e){
				System.out.println(mensajeTransaccionMetodo + "Hubo un error al listar " +e);
				response.setCodigoRespuesta(ConstantesInternasSistema.LISTAR_ACCESOHOST_COD_IDT38);
				response.setMensajeRespuesta(ConstantesInternasSistema.LISTAR_ACCESOHOST_MSJ_IDT38);
				return response;
			}
			
			if(reqAccesoHost.size() > 0){
				List<AccesoHostBean> lista = new ArrayList<AccesoHostBean>();
				for(AccesoHostListEntity row : reqAccesoHost){
					AccesoHostBean bean = new AccesoHostBean();
					bean.setActive(row.getActive());
					bean.setCodLocal(validaciones.validarCamposString(row.getCod_local()));
					bean.setIpEstatica(validaciones.validarCamposString(row.getIp_estatica()));
					bean.setLocalesId(row.getLocales_id());
					bean.setMacPc(validaciones.validarCamposString(row.getMac_pc()));
					bean.setUsuario(validaciones.validarCamposString(row.getUsuario()));
					bean.setUsuarioId(row.getUsuario_id());
					bean.setId(row.getId());
					lista.add(bean);
				}
				response.setListarAccesoHost(lista);
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(ConstantesInternasSistema.LISTAR_ACCESOHOST_COD_IDF37);
				response.setMensajeRespuesta(ConstantesInternasSistema.LISTAR_ACCESOHOST_MSJ_IDF37);
			}
			
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error en el proceso" +e);
			response.setCodigoRespuesta(ConstantesInternasSistema.LISTAR_ACCESOHOST_COD_IDT38);
			response.setMensajeRespuesta(ConstantesInternasSistema.LISTAR_ACCESOHOST_MSJ_IDT38);
			return response;
		}
		
		return response;
	}

	@Override
	public GenericResponse nuevoAccesoHost(String codTransaccion, AccesoHostBean accesoHost) {
		String mensajeTransaccionMetodo = "[nuevoAccesoHost idTx=" + codTransaccion + "] - ";
		GenericResponse response = new GenericResponse();
		try{
			GenericEntity daoAccesoHost = null; 
			AccesoHostDetRequest newAccesoHost = new AccesoHostDetRequest();
			newAccesoHost.setActive(accesoHost.getActive());
			newAccesoHost.setCodUsuario(accesoHost.getUsuarioId());
			newAccesoHost.setIdLocal(accesoHost.getLocalesId());
			newAccesoHost.setIpEstatica(validaciones.validarCamposString(accesoHost.getIpEstatica()));
			newAccesoHost.setMac(validaciones.validarCamposString(accesoHost.getMacPc()));
			try{
				daoAccesoHost = mantenimientoAccesoHostDao.guardarAccesoHost(newAccesoHost);
			}catch(Exception e){
				System.out.println(mensajeTransaccionMetodo + "Hubo un error al registrar el AccesoHost en BD "+e );
				response.setCodigoRespuesta(ConstantesInternasSistema.NUEVO_ACCESOHOST_COD_IDT39);
				response.setMensajeRespuesta(ConstantesInternasSistema.NUEVO_ACCESOHOST_MSJ_IDT39);
				return response;
			}
			
			if(daoAccesoHost.getCod_error() == Integer.valueOf(ConstantesInternasSistema.CODIGO_EXITO)){
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(ConstantesInternasSistema.NUEVO_ACCESOHOST_COD_IDF38);
				response.setMensajeRespuesta(ConstantesInternasSistema.NUEVO_ACCESOHOST_MSJ_IDF38);
			}
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error en el proceso " +e);
			response.setCodigoRespuesta(ConstantesInternasSistema.NUEVO_ACCESOHOST_COD_IDT39);
			response.setMensajeRespuesta(ConstantesInternasSistema.NUEVO_ACCESOHOST_MSJ_IDT39);
			return response;
		}
		
		return response;
	}

	@Override
	public GenericResponse editAccesoHost(String codTransaccion, AccesoHostBean accesoHost) {
		String mensajeTransaccionMetodo = "[editAccesoHost idTx=" + codTransaccion + "] - ";
		GenericResponse response = new GenericResponse();
		try{
			GenericEntity daoAccesoHost = null; 
			AccesoHostDetRequest editAccesoHost = new AccesoHostDetRequest();
			editAccesoHost.setId(accesoHost.getId());
			editAccesoHost.setCodUsuario(accesoHost.getUsuarioId());
			editAccesoHost.setIdLocal(accesoHost.getLocalesId());
			editAccesoHost.setIpEstatica(validaciones.validarCamposString(accesoHost.getIpEstatica()));
			editAccesoHost.setMac(validaciones.validarCamposString(accesoHost.getMacPc()));
			editAccesoHost.setActive(accesoHost.getActive());
			try{
				daoAccesoHost = mantenimientoAccesoHostDao.actualizarAccesoHost(editAccesoHost);
			}catch(Exception e){
				System.out.println(mensajeTransaccionMetodo + "Hubo un error al editar el Host en BD "+e );
				response.setCodigoRespuesta(ConstantesInternasSistema.EDIT_ACCESOHOST_COD_IDT40);
				response.setMensajeRespuesta(ConstantesInternasSistema.EDIT_ACCESOHOST_MSJ_IDT40);
				return response;
			}
			
			if(daoAccesoHost.getCod_error() == Integer.valueOf(ConstantesInternasSistema.CODIGO_EXITO)){
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(ConstantesInternasSistema.EDIT_ACCESOHOST_COD_IDF39);
				response.setMensajeRespuesta(ConstantesInternasSistema.EDIT_ACCESOHOST_MSJ_IDF39);
			}
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error en el proceso " +e);
			response.setCodigoRespuesta(ConstantesInternasSistema.EDIT_ACCESOHOST_COD_IDT40);
			response.setMensajeRespuesta(ConstantesInternasSistema.EDIT_ACCESOHOST_MSJ_IDT40);
			return response;
		}
		
		return response;
	}

	@Override
	public GenericResponse deleteAccesoHost(String codTransaccion, int codAccesoHost) {
		String mensajeTransaccionMetodo = "[deleteAccesoHost idTx=" + codTransaccion + "] - ";
		GenericResponse response = new GenericResponse();
		try{
			
			GenericEntity daoAccesoHost = mantenimientoAccesoHostDao.eliminarAccesoHost(codAccesoHost);
			
			if(daoAccesoHost.getCod_error() == Integer.valueOf(ConstantesInternasSistema.CODIGO_EXITO)){
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(ConstantesInternasSistema.DELETE_ACCESOHOST_COD_IDF40);
				response.setMensajeRespuesta(ConstantesInternasSistema.DELETE_ACCESOHOST_MSJ_IDF40);
			}
			
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error al eliminar el AccesoHost en BD " +e);
			response.setCodigoRespuesta(ConstantesInternasSistema.DELETE_ACCESOHOST_COD_IDT41);
			response.setMensajeRespuesta(ConstantesInternasSistema.DELETE_ACCESOHOST_MSJ_IDT41);
		}
		
		return response;
	}

}
